Duplicating digital streams for digital conferencing using switching technologies

ABSTRACT

Using switching technologies to duplicate packets of a digital stream (e.g., digital video stream) sent from one workstation to multiple recipient workstations, where the switching technologies enable the multiple streams sent from the switch to the recipient workstations to be generated from a single digital stream sent from the sending workstation to the switch. Data units, such as video data units, may be transmitted by using a switch to enable receipt of a stream of data units including a payload portion and an attribute portion from at least two conferencing participants. The switch is used to duplicate at least a subportion of the payload portion of a data unit within the stream of data units, and to enable access to the duplicated subportion of the data unit by two or more conferencing participants.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. application Ser. No.14/688,858, filed on Apr. 16, 2015, which is a continuation of U.S.application Ser. No. 13/620,820, filed on Sep. 15, 2012, which is acontinuation of U.S. application Ser. No. 13/053,903, filed on Mar. 22,2011, now issued as U.S. Pat. No. 8,463,853, which is a continuation ofU.S. application Ser. No. 11/549,934, filed on Oct. 16, 2006, now issuedas U.S. Pat. No. 7,921,157, which is a continuation of U.S. applicationSer. No. 10/134,439, filed Apr. 30, 2002, now issued as U.S. Pat. No.7,124,166, which claims priority to and the benefit of U.S. provisionalapplication No. 60/343,182 filed Dec. 31, 2001 and U.S. provisionalapplication No. 60/286,964, filed Apr. 30, 2001. Each of theaforementioned patents and applications are hereby incorporated byreference in their entirety.

TECHNICAL FIELD

The following description relates to using switching technologies tostream media in digital conferencing applications.

BACKGROUND

Video conferencing generally describes a process whereby conferencingparticipants can communicate remotely with one another through the useof video equipment that typically includes some form of camera and avideo display. Increased usage of the Internet has resulted in anincreased demand for video conferencing and a corresponding need forcost effective multimedia communications solutions.

SUMMARY

In one general aspect, data units may be transmitted by using a switchto receive from at least two conferencing participants a stream of dataunits that each include a payload portion and an attribute portion. Theswitch duplicates at least a subportion of the payload portion of a dataunit within the stream of data units, and enables access to theduplicated subportion of the data unit by two or more conferencingparticipants.

In another general aspect, a conferencing participant may participate inan electronic conference by interfacing with a network that includes aswitch that duplicates the stream of data units sent by two or moreconferencing participants and makes the duplicated stream of data unitsaccessible to more than one conferencing participant. The streams arereceived from the switch, with each stream including a payload portionthat has been duplicated by the switch and an attribute portion that hasbeen transmitted by more than one other conferencing participant.

In another general aspect, a conferencing participant participates in anelectronic conference by interfacing with a network that includes one ormore switches capable of duplicating at least a payload portion of adata unit within a stream of data units. The conferencing participanttransmits the stream of data units to the switches for duplication of atleast the payload portion for transmission to two or more conferencingparticipants.

In another general aspect, a conferencing participant participates in anelectronic conference by interfacing with a network that includes aswitch capable of duplicating a stream. The participant transmits astream to the switch and receives duplicated streams from the switch.

Implementations may include one or more of the following features. Forexample, the data unit may include an Internet Protocol packet. Theattribute portion of the data unit may include an Internet Protocolheader, or one or more pieces of layer three information.

Implementations may include using the switch to generate and associatedifferent attribute portions with duplicates of the payload portiongenerated by the switch. Using the switch to duplicate at least thepayload portion may include duplicating only the payload portion of thedata unit. Using the switch to associate different attribute portionswith the data unit and duplicates of the payload portion may includespecifying destination information that differs among the duplicates ofthe payload portion. Using the switch to generate and associatedifferent attribute portions may include changing an IP destinationaddress. Changing the IP destination address may include changing the IPdestination address to an IP address corresponding to one or moreconferencing participants to which access to the payload portion will beenabled.

Using the switch to duplicate may include using the switch to duplicatethe payload portion and the attribute portion. The switch may enable theconferencing participants to access duplicated subportions of data unitsin response to receiving a request to access the stream of data units.The request may be received from at least a requesting one of the two ormore conferencing participants, or from a device other than theconferencing participants.

Using the switch to enable access to the duplicated subportions of thedata unit may include transmitting two or more duplicated subportions totwo or more conferencing participants using the switch. Using the switchto enable access to the duplicated subportions of the data unit by twoor more conferencing participants may include transmitting two or moreduplicated subportions from a transmitting participant to all of theconferencing participants using the switch, or from all of theconferencing participants to all of the conferencing participants usingthe switch. Transmitting two or more duplicated subportions from all ofthe conferencing participants to all of the conferencing participantsmay include enabling the switch to filter an originating stream so thata stream of data units from an originating conferencing participant isnot transmitted back to the originating conferencing participant.

Implementations may include partitioning content from a stream thatincludes a combination of a forwarded signal and a filtered signal. Theforwarded signal may differ from the filtered signal. For example, theunderlying media format may be transcoded to a different bit rate.

Implementations may include determining whether one of the conferencingparticipants is attempting to actively participate. Using the switch toenable access to the duplicated subportions of the data unit by two ormore conferencing participants may include enabling access to thestreams of the conferencing participants attempting to activelyparticipate most recently. The streams of conferencing participants thathave not attempted to actively participate may not be duplicated.

Using the switch to enable access to the duplicated subportions mayinclude prioritizing conferencing participants to determine whichstreams of the conferencing participants are duplicated. Access to thestreams of conferencing participants with higher priorities may beenabled before enabling access to the data streams of conferencingparticipants with lower priorities. A priority for a participant may bespecified by one of a service provider, a conference organizer, or aconference manager.

Using a switch to enable access to the duplicated subportion of the dataunit by two or more conferencing participants may include using theconference manager to designate which of the conferencing participants'data streams are enabled to be accessed. Perceivable output may bedisplayed based on the stream of data units.

The details of one or more implementations are set forth in theaccompanying drawings and the descriptions below. Other features andadvantages will be apparent from the description and drawings, and fromthe claims.

DESCRIPTION OF DRAWINGS

FIG. 1 is a block diagram illustrating a communications system that usesa switch to duplicate digital streams and enable digital conferencingamong multiple conferencing participants.

FIG. 2A is a block diagram illustrating several conferencingapplications that may be available to an exemplary conferencingparticipant.

FIG. 2B is a block diagram illustrating an exemplary display used tomake known and/or available the conferencing applications described withrespect to FIG. 2A.

FIG. 3 is a diagram of a switch interfacing with four conferencingparticipants.

FIG. 4 is a flow chart illustrating the operation of a switch induplicating at least a subportion of a data unit in a stream of dataunits and enabling conferencing participants to access the duplicatedsubportion of the stream of data units.

FIG. 5 is a diagram illustrating the operation of a conferencingparticipant in prioritizing among several duplicated streams of dataunits for display.

Like reference symbols in the various drawings indicate like elements.

DETAILED DESCRIPTION

In general, switching technologies may be used to duplicate packets in adigital conference (e.g., digital video stream) sent from oneworkstation as part of an electronic conference. The switchingtechnologies enable the multiple streams sent from the switch to therecipient workstations to be generated from a single digital stream sentfrom the sending workstation to the switch. Thus, a terminalparticipating in the conference does not need to transmit a stream foreach participant.

By way of introduction, FIGS. 1-3 illustrate aspects of a communicationssystem that uses switching techniques to duplicate digital streams toenable conferencing between multiple participants. For brevity, in FIGS.1-3, several elements are represented as monolithic entities. However,as would be understood by one skilled in the art, these elements eachmay include numerous interconnected computers and components configuredto perform a set of specified operations and/or dedicated to aparticular geographical region. FIGS. 4 and 5 illustrate aspects of acommunications system that may or may not correspond to the logicaland/or physical aspects described with respect to FIGS. 1-3.

Referring to FIG. 1, a communications system 100 that is capable ofproviding conferencing between multiple participants may be structuredand arranged to include two or more conferencing participants 150A and150B and communication software and hardware that enables communicationsbetween them. More particularly, the communications system 100 mayinclude a transmitting participant 110 (optional), a network 120, aswitch 130, a conference manager 135 (optional), a network 140, andconferencing participants 150A and 150B. A conferencing participant 150Agenerally transmits one or more streamed data units across network 120to one or more switches 130 that duplicate the data units or portions ofthe data units and transmit the duplicated data units or portions to thetwo or more conferencing participants 150A and 150B through network 140.

A transmitting participant 110 typically includes a computer system thatconverts a media feed into a stream. Transmitting participant 110 may bestructured and arranged to convert the media source (e.g., a video oraudio feed) into data units for transmission across a network 120. Thetransmitting participant 110 may include a general-purpose computerhaving a central processor unit (CPU) and memory/storage devices thatstore data and various programs such as an operating system and one ormore application programs. Other examples of a transmitting participant110 include a workstation, a server, a device, a special purpose deviceor component, a broadcast system, other equipment, or some combinationthereof capable of responding to and executing instructions in a definedmanner. The transmitting participant 110 also typically includes aninput/output (I/O) device (e.g., one or more devices having a videoand/or audio input and conversion capability), and peripheral equipmentsuch as a communications card or device (e.g., a modem or a networkadapter) for exchanging data with the network 120.

A communications link 115 is used to communicate data between thetransmitting participant 110 and the network 120. Communications link115 may include, for example, a telephone line, a wireless network link,a cable network, or a direct connection.

The network 120 typically includes hardware and/or software capable ofenabling direct or indirect communications between the transmittingparticipant 110 and the switch 130. The network 120 may include a directlink between the transmitting participant 110 and the switch 130, or itmay include one or more networks or subnetworks between them (notexplicitly shown). Each network or subnetwork may include, for example,a wired or wireless data pathway capable of carrying and receiving data.Examples of network 120 include the Internet, the World Wide Web, a WAN(“Wide Area Network”), a LAN (“Local Area Network”), an analog or adigital wired or wireless telephone network (e.g., a PSTN (“PublicSwitched Telephone Network”), an ISDN (“Integrated Services DigitalNetwork”), or a xDSL (“any form of Digital Subscriber Loop”)), and/or aradio network, a television network, a cable network, a satellitenetwork, or some other delivery mechanism for carrying data.

The switch 130 typically is structured and arranged to receive streamsof data units (e.g., from the transmitting participant 110 and theconferencing participants 150A and 150B), to duplicate the stream ofdata units., and to transmit the duplicated streams to two or moreconferencing participants 150A and 150B.

In some implementations, the switch 130 is structured and arranged toperform filtering and forwarding between different domains at the samelevel of the protocol stack in the OSI (“Open System Interconnection”)reference model. For example, in some networks, switch 130 may forwardEthernet frames between different Ethernet segments. In another example,switch 130 may forward IP packets between different IP subnets.

Generally, switch 130 includes a device that performs network operationsand functions in hardware (e.g., a chip or a part of chip). In someimplementations, the device may include an ASIC (“Application SpecificIntegrated Circuit”) that implements network operations logic directlyon a chip (e.g., logical gates fabricated on a silicon wafer thenmanufactured into a chip). For example, an ASIC chip may implement alogical gate structure in silicon to perform filtering by receiving apacket, examining the IP address of the received packet, and filteringbased on the IP address.

Implementations of the device included in the switch 130 may use a FieldProgrammable Gate Array (FPGA). A FPGA is generally defined as includinga chip or chips fabricated to allow third party designers to implement avariety of logical designs on the chip. For example, a third partydesigner may load a design within a FPGA to replace the received IPaddresses with different IP addresses, or may load a design within theFPGA to segment and reassemble IP packets as they are modified whilebeing transmitted through different networks.

Implementations of the device included in the switch 130 may include anetwork processor. A network processor generally is defined to include achip or chips for allowing software to specify network operations to beperformed. A network processor may perform a variety of operations. Oneexample of a network processor may include several interconnected RISC(“Reduced Instruction Set Computer”) processors fabricated in a networkprocessor chip. The network processor chip may implement software onsome of the RISC processors to change an IP address of an IP packet.Other RISC processors in the network processor chip may implementsoftware that determines which conferencing participants are receivingan IP stream.

Although various examples of network operations were defined withrespect to different devices, each of the devices may to be programmableand capable of performing the operations of the other devices. Forexample, the FPGA device is described as the device used to replace IPaddresses and segment and reassemble packets; however, a networkprocessor and ASIC are generally capable of performing the sameoperations.

Data units handled by switch 130 may be accessed by or sent toconferencing participants 150A and 150B through network 140. As such,network 140 is structured and arranged to receive data units transmittedfrom the switch 130 for transmission to the conferencing participants150.

The conference manager 135 may include one or more devices capable ofenabling an electronic conference of two or more conferencingparticipants. The conference manager 135 may include a controller (notshown) that processes instructions received from or generated by asoftware application, a program, a piece of code, a device, a computer,a computer system, or a combination thereof, to direct operations of theconference manager 135. The instructions may be embodied permanently ortemporarily in any type of machine, component, equipment, storagemedium, or propagated signal that is capable of being delivered to theconference manager 135 or that may reside with the controller at theconference manager 135. The conference manager 135 may include ageneral-purpose computer (e.g., a personal computer) capable ofresponding to and executing instructions in a defined manner, a systemor a component in the switch 130, other equipment, or some combinationof these items that is capable of responding to and executinginstructions.

For instance, in one implementation, the conference manager 135 includesone or more scheduling, management, and authentication applications(e.g., calendaring software) capable of establishing and managing one ormore electronic conferences. These scheduling and authenticationapplications may run on a general purpose operating system and ahardware platform that includes a general purpose processor andspecialized hardware for graphics, communications and/or othercapabilities. In another implementation, conference manager 135 mayinclude a switch designation component (e.g., a server or program) thatdetermines the switch 130 with which the conferencing participants willbe communicating. For example, the conference manager 135 may bestructured and arranged to communicate to the conferencing participantswhich specific switch will host the conference (e.g., duplicate andtransmit the streams of data units), or to communicate to the designatedswitch the required information and authorization to host theconference.

Implementations of the conference manager 135 may include a serviceprovider or a conference organizer. For example, a service provider mayoffer conferencing services and arrange or set up conferences. Inanother example, a conference organizer (e.g., a user putting togetheran electronic conference) may act both as a conference manager 135 and aconferencing participant 150B.

The network 140 may include hardware and/or software capable of enablingdirect or indirect communications between the switch 130 and theconferencing participant 150. As such, the network 140 may include adirect link between the switch 130 and the conferencing participant 150,or it may include one or more networks or subnetworks between them (notshown). Each network or subnetwork may include, for example, a wired orwireless data pathway capable of carrying and receiving data. Examplesof the delivery network include the Internet, the World Wide Web, WANs,LANs, analog or digital wired and wireless telephone networks (e.g.,PSTN, ISDN, or xDSL), radio, television, cable, satellite, and/or anyother delivery mechanism for carrying data. Network 120 and network 140may share one or more hardware or software devices.

Conferencing participants 150A and 150B may include one or more devicescapable of receiving the streams of data units transmitted by switch 130through network 140. The conferencing participant 150A may include acontroller (not shown) that processes instructions received from orgenerated by a software application, a program, a piece of code, adevice, a computer, a computer system, or a combination thereof, todirect operations of the conferencing participant 150A. The instructionsmay be embodied permanently or temporarily in any type of machine,component, equipment, storage medium, or propagated signal that iscapable of being delivered to the conferencing participant 150A or thatmay reside with the controller at the conferencing participant 150. Theconferencing participant 150 may include a general-purpose computer(e.g., a personal computer) capable of responding to and executinginstructions in a defined manner, a workstation, a laptop, a PDA(“Personal Digital Assistant”), a wireless phone, a component, otherequipment, or some combination of these items that is capable ofresponding to and executing instructions.

For instance, in one implementation, the conferencing participant 150Aincludes one or more information retrieval software applications (e.g.,a browser, a mail application, an instant messaging client, an Internetservice provider client, or an AOL TV or other integrated client)capable of receiving one or more data units. The information retrievalapplications may run on a general purpose operating system and ahardware platform that includes a general purpose processor andspecialized hardware for graphics, communications and/or othercapabilities. In another implementation, conferencing participant 150Amay include a wireless telephone running a micro-browser application ona reduced operating system with general purpose and specialized hardwarecapable of operating in mobile environments.

Generally, conferencing participant 150A participates in an electronicconference by transmitting and receiving streams of data units. However,implementations may include having conferencing participants 150Aparticipate in an a synchronous mode. For example, an electronicconference may incorporate a news feed that is being discussed andtransmitted by a transmitting participant. In another example, abriefing may be incorporated into an electronic conference to enablewider participation. Other asynchronous modes may include conferencingparticipants that receive but do not transmit. For these and otherreasons, aspects of the transmitting participant 110 may resemble, butare not limited to, aspects of the conferencing participant 150A.

Conferencing participant 150B may include a workstation that isidentical to conferencing participant 150A, or conferencing participant150B may include a device that differs from conferencing participant150A. For example, conferencing participant 150A may include a PDA whileconferencing participant 150B includes a workstation.

In another implementation, the conferencing participants 150A and 150Bmay have different input/output capabilities. For example, oneconferencing participant 150A may not have a camera from which togenerate video content. This may limit the conferencing participant 150Ato only sending an audio stream of data units. In anotherimplementation, the conferencing participant 150A may have limitedgraphical display capabilities (e.g., the conferencing participant maybe a PDA). The conferencing participant 150A may receive text messagesexchanged as part of the electronic conference without receiving videocontent.

FIG. 2A illustrates conferencing applications 200A that are available toan exemplary conferencing participant, such as the conferencingparticipant 150A described in FIG. 1. The applications depicted includevideo conferencing application 210A, image conferencing application220A, audio conferencing application 230A, and text conferencingapplication 240A.

In general, the conferencing applications 200A are logically organizedfrom the top of the diagram down based on the resources required bythose applications. For example, video conferencing applications 210Agenerally require more bandwidth than text conferencing applications240A. Similarly, the computational resources required by the image andaudio compression techniques to compress, decompress and/or displaymedia generally decrease from video conferencing applications 210A toimage conferencing applications 220A to audio conferencing applications230A to text conferencing applications 240A. The resources required forone or more applications may lead one or more conferencing participantsto participate in a less resource-intensive manner.

Typically, video conferencing application 210A encodes and displaysaudio and video content. Implementations of video conferencingapplication 210A use compression to reduce the bandwidth consumed bytransmitting the stream of data units. For example, video conferencingprotocols and techniques may reduce the resolution, detail, or framerate to reduce the bandwidth consumed. In another example, theframe-to-frame differences may be encoded for transmission instead ofencoding each frame. Similar techniques may be applied to the audiosignal. For example, the sampling rate of the audio signal may bereduced or the signal may be compressed.

Image conferencing application 220A typically operates by displaying oneor more images to conferencing participants. Although an imageconferencing application may resemble, in some implementations, a videoconferencing application 210A with a low frame rate, image conferencingapplication 220A typically has non-video implementations. For example, aconferencing participant may input a map into an electronic conferencein which aspects of the map are discussed. Other implementations mayinclude inputting a web page and/or a slide show for incorporation intothe electronic conference. In an implementation that resembles videoconferencing application 210A, an image of the conferencing participantmay be displayed in an audio conference when that conferencingparticipant is speaking.

Audio conferencing application 230A involves the use of an audio signal(e.g., a stream of data units) for incorporation into an electronicconference. Typically, aspects of the audio conferencing application mayresemble aspects of the audio signal in a video conferencing application210A discussed above in that the signal may be compressed.

Text conferencing application 240A involves the exchange of text in anelectronic conference. One common form of exchanging text may featurethe use of “chat” (e.g., a “chat room”). Other text exchangingapplications may include electronic mail, instant messaging, SMS (“ShortMessage Service”), and proprietary applications. Although some of thetext exchanging applications may not commonly appear as textconferencing applications 240A, implementations may include using anunderlying text exchanging application as a transport mechanism in theconferencing application. For example, an electronic conference may useelectronic mail to exchange text messages between conferencingparticipants. In another example, when one conferencing participantreceives an instant message from another conferencing participant, theinstant message may be incorporated into the electronic conference.

FIG. 2B illustrates one implementation for user environment 200B thatindicates how several of the applications described with respect to FIG.2A may be collectively integrated into and form one or more electronicconferencing applications. Typically, user environment 200B operates ona computer system, such as the conferencing participant 150A describedwith respect to FIG. 1. User environment 200B may be structured andarranged to incorporate video, images, text and audio as part of anelectronic conference as well as to share a common application or whiteboard. Specifically, user environment 200B includes video application210B, image application 220B, audio conferencing application 230B, textconferencing application 240B, and shared application 250B.

Typically, video application 210B features the display of two otherconferencing participants. In one implementation, each conferencingparticipant has related text and audio conferencing applications, andthe first conferencing participant may be represented by a videoconferencing application 212B, an audio conferencing application 232B,and a text conferencing application 242B. The second conferencingparticipant communicates with a video application 214B, an audioconferencing application 234B, and a text conferencing application 244B.A third conferencing participant without video conferencing capabilitymay communicate using an imaging application 220B, an audio conferencingapplication 236B, and a text conferencing application 246B.

The audio conferencing application 230B depicts an implementationreflecting both common audio properties as well as properties specificto their originating sources. More precisely, general audio sourcesgenerated simultaneously may cause destructive interference that makethem difficult to understand. For this reason, the audio channel may bestructured so that one audio channel is broadcast at a time. Forexample, implementations may commonly manage all audio conferencingapplications and apply the same operating instructions to all receivedaudio signals. In one example, receiving several different audio sourcessimultaneously may cause user confusion or comprehension difficultiesthat may be avoided through the application of filtering criteriageneric to several users. Alternatively, it may be desirable to providesource-specific operating and/or filtering instructions. For example,where the different audio signals are received at different strengths,the conferencing participant may wish to reduce the volume from oneconferencing participant and increase the volume from anotherconferencing participant. In another implementation, a conferencingparticipant may wish to listen to everything from the conferencingparticipant in the audio conferencing application 232B and “mute” orsuppress the audio conferencing application 234B. Each function may beenabled through filtering controls displayed in user environment 200B.

A text conferencing application 240B may be a common application to allparticipants (as represented by the application appearing across thebreadth of participants) or may be specific to conferencing participants(as represented by text conferencing applications 242B, 244B, and 246B.In one implementation of text conferencing as a common application toall participants, when a conferencing participant enters a message to becommunicated, the participant's identification may appear next to themessage. In implementations of conferencing participant-specific textconferencing, the message may be displayed in association with itssource (e.g., underneath the corresponding participant).

FIG. 3 illustrates the operation of a switch in interfacing with fourconferencing participants to duplicate a stream of data units.Conferencing participants 310, 320, 330 and 340 each generallycorrespond to the conferencing participants described with respect toFIGS. 1 and 2B, and switch 350 generally corresponds to the switch 130described with respect to FIG. 1.

Each of conferencing participant 310, 320, 330, and 340 transmits onestream of data units to the switch 350 for duplication, and receives theduplicated streams of the other participants in return from the switch350. When each conferencing participant receives the stream of dataunits of all the other conferencing participants, the total number ofstreams sent out by the switch is 2(N−1), where N is the number ofconferencing participants (i.e., the switch sends out six streams whenthere are four participants). Although FIG. 3 illustrates having eachconferencing participant receive the stream of every other conferencingparticipant, some implementations, particularly those having a largenumber of conferencing participants, may use intelligent selection andfiltering techniques to reduce the number of streams that aretransmitted to each participant.

Furthermore, although one switch is depicted, implementations mayinclude using more than one switch. For example, several users mayinitiate an electronic conference at one switch. However, as additionalusers join the electronic conference, additional switches may be addedto support the electronic conference. More specifically, in oneimplementation, a first switch with limited available capacity mayinitiate a connection to a second switch and send all new connections tothe second switch. Initiating the connection to the second switch mayinclude exchanging duplicated data units between the first and secondswitches. In another example, when the second switch is activated,several users may be transferred to the second switch to be hosted.Implementations also may include intelligent switch selection criteriathat activate use of a second switch. For example, when the switchdetermines that several users are located in the same proximity, theswitch may activate an additional switch that is closer to the users tohost the conference so that duplicated streams are not being transmittedacross large portions of the network.

FIG. 4 illustrates the operation of a communications system that uses aswitch to duplicate at least a subportion of a stream of data units andenable conferencing participants to access the duplicated subportion ofthe stream of data units. The communications system includes aconference manager 401, a switch 402, and several conferencingparticipants 403-406.

The conference manager 401 generally initiates the conference (step 410)by, for instance, determining the identity of a switch to host theconference and enabling the switch to host the conference for two ormore terminals. The conference may be initiated in response to a requestfrom a conferencing participant to host the conference. The conferencemay be initiated by allocating switch resources and authenticatingconferencing participants. Allocating switch resources may include loadbalancing conferencing participants among more than one switch to reducenetwork/switch congestion. Conferencing participants seeking to join anelectronic conference being hosted on a switch may be authenticated toensure conference confidentiality through a login process or through amore elaborate set of steps, such as the exchanging of public and/orprivate keys.

The request to initiate the conference is received by switch 402 (step412), which also may verify and authenticate the message (not shown). Inresponse to the request, the switch 402 establishes the conference (step413). Although the conference is established in response to a requestfrom a conference manager, in some configurations, the conferencemanager may reside on a conferencing participant. In any event, theswitch 402 establishes a conference with conferencing participants403-406 (step 414). Establishing the connection generally enables aconferencing participant to communicate a stream of data units to otherconferencing participants through the switch 402 and to receive streamsof data units from one or more other conferencing participants throughthe switch 402.

Terminal 403 transmits a stream of data units (step 416) that isreceived by the switch 402 (step 418). The switch duplicates the streamof data units (step 420). In general, duplicating the stream of dataunits includes receiving a data unit, identifying a payload portionwithin the data unit, enabling an instance of the payload to be modifiedfor subsequent transmission, and adding header information to the dataunit to reflect addressing information corresponding to one or morerecipients (e.g., conferencing participants 403-406). The stream may beduplicated by copying the payload (e.g., content) of an IP packet andchanging the header information to reflect the IP address of thedestination conferencing participants for the payload, by storing one ormore IP packets for modification (e.g., the IP packet may be stored), byloading the packet to memory and changing the IP destination addresswhile preserving other parameters in the header, or by other techniques.Operations may be performed on the payload before transmitting thepayload to a conferencing participant. For example, the switch maytranscode the content of the payload to reduce the bit rate of thestream. Generally, transcoding involves modifying a compressed signal sothat the characteristics of the modified signal correspond to specifiedcriteria. For example, a high bit rate video signal may be transcoded byhaving the compressed video signal expanded, and recompressed at ahigher compression ratio before transmitting the recompressed signal toa conferencing participant.

Another operation that may be performed includes partitioning a combinedsignal to extract a forwarded signal and remove a filtered signal. Forexample, a switch may remove an audio signal from a combinedaudio-visual signal to reduce the bandwidth required to transmit theforwarded signal.

Although FIG. 4 illustrates having terminals 403-406 receive atranscoded and partitioned stream in steps 440-450, the diversity ofpartitioning techniques is intended to demonstrate that various fauns ofpartitioning are available rather than how a conferencing participantwould likely transition between different conferencing applications. Forexample, a terminal that is capable of receiving higher rate videoapplications would not likely request to “downgrade” the received signaland received text instead. Similarly, a conferencing participant capableof receiving video generally would not elect to receive audio or lowerrate video instead.

In any event, regardless of the operations used during duplication ofthe payload portion, the switch 402 ultimately transmits the duplicatedstreams to conferencing participants 404-406 (step 422), and theconferencing participants 404-406 ultimately receive the stream of dataunits (step 424).

As part of participating in the electronic conference, terminal 404transmits a stream of data units (step 426). The switch 402 receives(step 428) and duplicates (step 430) the stream of data units, and thentransmits (step 432) the duplicated streams of data units which arereceived (step 434) by the conferencing participants 403, 405 and 406.

As the third participant to transmit in an electronic conference,terminal 405 transmits a stream of data units (step 435) that arereceived (step 436) by switch 402. The switch 402 performs operations onthe data units. First, the switch 402 transcodes the data units (step438). Typically, transcoding the data units involves modifying thecontent portion or underlying media format of a data unit to give thestream of data units a desired characteristic. For example, lowerquality video may be decompressed and recompressed at a higher data ratewith more detail and resolution. In another example, the data rate maybe reduced by reducing the number of frames, and resolution, and/or byusing a lossier compression algorithm.

Next the switch 402 extracts or partitions content from within thestream of data units (step 440) by, for example, filtering a signal froma stream of data units whose content combines more than one type ofmedia (e.g., another signal). In this manner, an audio signal may beextracted from a composite audio-video signal.

Although FIG. 4 depicts transcoding as occurring before partitioning,implementations may include performing those and other steps in reverseorder or simultaneously, or combining them with other steps. Forexample, a stream of data units may have the content of the receivedstream of data units expanded, and then may extract the audio signalfrom the expanded stream.

The stream of data units is transmitted to terminals 403, 404, and 406(step 442) in one or several formats. Additionally, the transmitted dataunits may be received in various formats based on the terminal to whichthey are transmitted. For instance, terminal 403 may receive or filteran audio stream of data units where the audio portion of a video signalhas been partitioned (step 446), terminal 404 may receive or filter alower bit rate video that has been transcoded (step 448), and terminal406 may receive or filter text that has been partitioned and an imagethat has been transcoded from the underlying stream of data units (step450).

Although a conferencing participant may receive output streams of dataunits from several sources concurrently (e.g., using several displays onone or more display devices), the conferencing participant mayselectively receive and/or display a subset of the multiple streams atany given instant. For example, limited bandwidth to the conferencingparticipant may constrain the number of simultaneous connections, orcomprehension issues may undermine the advantages otherwise obtained byreceiving more than one stream at a time. In an example of sevenconferencing participants, it may be advantageous to transmit datastreams from only four of the seven conferencing participants to theconferencing participant to avoid bandwidth constraints or to avoidconfusing the recipient conferencing participant.

It may therefore become necessary to prioritize among several competingor simultaneous data streams. For example, access to the streams of dataunits may be limited to the conference manager's stream and also thoseof the three most recent “active” participants. A conferencingparticipant may be considered “active” when the participant attempts totransmit during the electronic conference by, for instance, speakinginto a microphone, moving while on camera, or typing text in a chatwindow.

FIG. 5 illustrates prioritization in an electronic conferencing systemthat includes conferencing participants 501-503, a conference manager504, and a conferencing participant 508. Conferencing participants501-503 each transmit streams of data units concurrently, whileconferencing participant 508 determines which of the streams of dataunits to “watch” or otherwise perceive.

In this example, conferencing participant 501 is talking initially (step510). In response, conferencing participant 508 perceives conferencingparticipant 501 (step 512).

If, in the course of the electronic conference, conferencing participant502 begins talking (step 514), conferencing participant 508 stopsperceiving conferencing participant 501 (step 516) and begins perceivingconferencing participant 502 (step 518). When conferencing participant501 begins talking again (step 520), conferencing participant 508 stopsperceiving conferencing participant 502 (step 522) and begins perceivingconferencing participant 501 (step 524) due to the fact that there is anew “active” participant.

When a conferencing participant 503 is designated as having a lowerpriority than the conference participant currently beingbroadcast/perceived, other conferencing participants disregardcommunications by that conferencing participant, as illustrated byconferencing participant 508 disregarding communications by conferencingparticipant 503 while higher-priority conferencing participant 501 isbeing perceived (steps 526 and 528).

Participant prioritization may be implemented by network-centrictechniques or by conferencing participant-centric techniques. Forexample, in a network-centric prioritization, the switch may assignusers different priorities designated by, for example, conferencemanager 504. This prioritization may be forwarded by a conferencingparticipant to the switch, which will selectively duplicate and enableaccess to (e.g., transmit) subportions of the stream of data units. Ifconflicts exist in priorities, the conference organizer's priorities maytake precedence.

In a participant-centric technique, the receiving device may determinewhich streams of data units the switches should filter out. For example,the conferencing participant may elect to always receive the stream ofdata units of a specified conferencing participant. In yet anotherexample, the conferencing participant may receive filtering orprioritization parameters from a conference manager 504.

To illustrate prioritization based at the conference manager 504, theconference manager 504 enables priority for conferencing participant 502when conferencing participant 501 is transmitting (step 530).Conferencing participant 502 receives the priority to transmit and haveits stream duplicated before other conferencing participants (step 532).In one implementation, the switch may receive a prioritization messageand selectively duplicate streams, or may forward the prioritizationmessage to conferencing participants to allow the participants toselectively filter signals. In another implementation, the conferencemanager 504 may direct a prioritization message to conferencingparticipants without using the switch to replicate the message. In yetanother example, the conference manager 504 may contact the transmittingconferencing participant (e.g., conferencing participant 501) and directthat participant to stop transmitting.

Regardless of the prioritization systems used, conferencing participant502 begins talking (step 534). In response, conferencing participant 508stops perceiving conferencing participant 501 (step 536) and startsperceiving conferencing participant 502 (step 538). Even thoughconferencing participant 502 receives a priority designation,conferencing participant 501 begins talking (step 540). However, becauseconferencing participant 502 has been designated to be a higher prioritythan conferencing participant 501, conferencing participant 508disregards conferencing participant 501 (step 542).

Other implementations are within the scope of the following claims. Inparticular, in some implementations, the switch may perform one or moreof the functions performed by the conference manager. The switch,conferencing participants, and networks also may be distributed acrossdifferent entities in the communications system and may make use of oneor more agents and/or proxies to perform certain functions. For example,the switch may receive a forwarded list of conferencing requirementsfrom a server that arranges electronic conferences to be hosted on oneor more switches.

In one example, the conference may be launched by existing applications.For example, a user may be participating in a chat room. One of theusers may propose a chat by entering a URL (“Uniform Resource Locator”)that is launched by the users clicking on the URL. For example, the URLmay contain a hyperlink to conference ID#10 on duplicating switch on IPaddress A.B.C.D. Launching the URL ‘connects’ the terminal to theduplicating switch. Upon receiving the URL request from the terminal,the duplicating switch may then look up ID#10 and determine that streamIDs 10-14 are associated with ID#10 and transmit those streams to therequesting terminal. The duplicating switch also may receive stream ID15 from the requesting terminal and send stream ID 15 to otherparticipants in conference ID#10.

What is claimed is:
 1. A method comprising: concurrently receiving aplurality of data streams that correspond to a plurality of conferencingparticipants; determining, by at least one processor, that a firstparticipant is active, wherein the first participant corresponds to afirst data stream of the plurality of data streams; based on determiningthat the first participant is active, assigning a first priority to thefirst data stream; determining, by the at least one processor, that thefirst priority assigned to the first data stream is higher thanpriorities of all other data streams of the plurality of data streams;and based on determining that the first priority is higher than thepriorities of all other data streams of the plurality of data streams,providing the first data stream corresponding to the first participantfor display in a first position of a user interface.
 2. The method asrecited in claim 1, wherein determining that the first participant isactive comprises determining, based on content of the first data stream,that the first participant has recently spoken into a microphone.
 3. Themethod as recited in claim 1, wherein determining that the firstparticipant is active comprises determining, based on content of thefirst data stream, that the first participant has recently moved whileon camera.
 4. The method as recited in claim 1, wherein determining thatthe first participant is active comprises determining, based on contentof the first data stream, that the first participant has recently typedtext.
 5. The method as recited in claim 1, wherein providing the firstdata stream from the first participant for display in the first positionof the user interface comprises replacing a previously displayed datastream of the plurality of data streams in the first position of theuser interface.
 6. The method as recited in claim 1, further comprising:determining, by the at least one processor, that a second participant isactive, wherein the second participant corresponds to a second datastream of the plurality of data streams; based on determining that thesecond participant is active, assigning a second priority to the seconddata stream; determining, by the at least one processor, that the secondpriority assigned to the second data stream is higher than the firstpriority assigned to the first data stream; and based on determiningthat the second priority is higher than the first priority, providingthe second data stream corresponding to the second participant fordisplay in the first position of the user interface.
 7. The method asrecited in claim 6, further comprising increasing a volume of an audiosignal associated with the second data stream from the secondparticipant in response to displaying the second data stream in thefirst position of the user interface.
 8. The method as recited in claim6, further comprising: determining that the first participant isinactive; based on determining the first participant is inactive,assigning the first data stream a lower priority than the firstpriority; and ceasing to provide the first data stream in the firstposition of the user interface based on the lower priority assigned tothe first data stream.
 9. The method as recited in claim 8, furthercomprising decreasing a volume of an audio signal associated with thefirst data stream from the first participant in response to ceasing toprovide the first data stream in the first position of the userinterface.
 10. The method as recited in claim 8, wherein determiningthat the first participant is inactive comprises determining that thefirst participant is not speaking into a microphone, moving while oncamera, or typing text.
 11. The method as recited in claim 1, furthercomprising: determining, by the at least one processor, that a secondparticipant is active, wherein the second participant corresponds to asecond data stream of the plurality of data streams; based ondetermining that the second participant is active, assigning a secondpriority to the second data stream; determining, by the at least oneprocessor, that the second priority assigned to the second data streamis higher than the first priority assigned to the first data stream;receiving, via a client device, user input indicating a selection todisplay the first data stream in the first position of the userinterface; and based on the selection to display the first data stream,providing the first data stream in the first position of the userinterface regardless of the second priority assigned to the second datastream being higher than the first priority assigned to the first datastream.
 12. A system comprising: at least one processor; at least onenon-transitory computer-readable storage medium storing instructionsthereon that, when executed by the at least one processor, cause thesystem to: concurrently receive a plurality of data streams thatcorrespond to a plurality of conferencing participants; determine that afirst participant is active, wherein the first participant correspondsto a first data stream of the plurality of data streams; based ondetermining that the first participant is active, assign a firstpriority to the first data stream; determine that the first priorityassigned to the first data stream is higher than priorities of all otherdata streams of the plurality of data streams; and based on determiningthat the first priority is higher than the priorities of all other datastreams of the plurality of data streams, provide the first data streamcorresponding to the first participant for display in a first positionof a user interface.
 13. The system as recited in claim 12, furthercomprising instructions that, when executed by the at least oneprocessor, cause the system to determine that the first participant isactive comprises determining, based on content of the first data stream,that the first participant has recently spoken into a microphone, movedwhile on camera, or typed text.
 14. The system as recited in claim 12,further comprising instructions that, when executed by the at least oneprocessor, cause the system to: determine that a second participant isactive, wherein the second participant corresponds to a second datastream of the plurality of data streams; based on determining that thesecond participant is active, assign a second priority to the seconddata stream; determine that the second priority assigned to the seconddata stream is higher than the first priority assigned to the first datastream; and based on determining that the second priority is higher thanthe first priority, provide the second data stream corresponding to thesecond participant for display in the first position of the userinterface.
 15. The system as recited in claim 14, further comprisinginstructions that, when executed by the at least one processor, causethe system to: determine that the first participant is inactive; basedon determining the first participant is inactive, assigning the firstdata stream a lower priority than the first priority; and cease toprovide the first data stream in the first position of the userinterface based on the lower priority assigned to the first data stream.16. A non-transitory computer readable medium storing instructionsthereon that, when executed by at least one processor, cause a computersystem to: concurrently receive a plurality of data streams thatcorrespond to a plurality of conferencing participants; determine that afirst participant is active, wherein the first participant correspondsto a first data stream of the plurality of data streams; based ondetermining that the first participant is active, assign a firstpriority to the first data stream; determine that the first priorityassigned to the first data stream is higher than priorities of all otherdata streams of the plurality of data streams; and based on determiningthat the first priority is higher than the priorities of all other datastreams of the plurality of data streams, provide the first data streamcorresponding to the first participant for display in a first positionof a user interface.
 17. The non-transitory computer readable medium asrecited in claim 16, further comprising instructions that, when executedby the at least one processor, cause the computer system to determinethat the first participant is active comprises determining, based oncontent of the first data stream, that the first participant hasrecently spoken into a microphone, moved while on camera, or typed text.18. The non-transitory computer readable medium as recited in claim 16,further comprising instructions that, when executed by the at least oneprocessor, cause the computer system to: determine that a secondparticipant is active, wherein the second participant corresponds to asecond data stream of the plurality of data streams; determine that thesecond priority assigned to the second data stream is higher than thefirst priority assigned to the first data stream; and based ondetermining that the second priority is higher than the first priority,provide the second data stream corresponding to the second participantfor display in the first position of the user interface.
 19. Thenon-transitory computer readable medium as recited in claim 18, furthercomprising instructions that, when executed by the at least oneprocessor, cause the computer system to: determine that the firstparticipant is inactive; based on determining the first participant isinactive, assigning the first data stream a lower priority than thefirst priority; and cease to provide the first data stream in the firstposition of the user interface based on the lower priority assigned tothe first data stream.
 20. The non-transitory computer readable mediumas recited in claim 19, further comprising instructions that, whenexecuted by the at least one processor, cause the computer system to:decrease a volume of an audio signal associated with the first datastream from the first participant in response to ceasing to provide thefirst data stream in the first position of the user interface; andincrease a volume of an audio signal associated with the second datastream from the second participant in response to providing the seconddata stream for display in the first position of the user interface.